﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>DN_RESIZECONSOLE</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../styles/styles.css">
<script language="javascript" src='../../links.js' type="text/javascript"></script>
</head>
<body>

<h1>DN_RESIZECONSOLE</h1>
<div class=navbar>
<a href="../../index.html">главная</a> |
<a href="index_dn.html">события</a> |
<a href="../index.html">Dialog API</a>
</div>

<div class=shortdescr>
Событие <code>DN_RESIZECONSOLE</code> передаётся процедуре обработки диалога после изменения размера консоли (например, после того, как пользователь нажал <kbd>Alt</kbd>+<kbd>F9</kbd>).
</div>

<h3>Param1</h3>
<div class=descr>
0
</div>

<h3>Param2</h3>
<div class=descr>
Указатель на структуру <a href="../../winapi/coord.html">COORD</a>, в которой указаны текущие размеры консоли.
</div>

<h3>Return</h3>
<div class=descr>
<code>TRUE</code>.
</div>

<h3>Элементы</h3>
<div class=descr>
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Элемент</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%">Диалог</td>
<td class="cont" width="60%">сообщение затрагивает только диалог</td></tr>
</table>
</div>

<h3>Замечания</h3>
<div class=descr>
Событие <code>DN_RESIZECONSOLE</code> полезно в том случае, когда плагин умеет подстраиваться под текущие размеры консоли. Пример работы данного события
можно наблюдать в диалоге поиска файлов (<kbd>Alt</kbd>+<kbd>F7</kbd>).
</div>

<h3>Пример</h3>
<div class=descr>
Изменение размеров диалога поиска (<kbd>Alt</kbd>+<kbd>F7</kbd>) при изменении размеров консоли.
<pre class=code>
case DN_RESIZECONSOLE:
{
  COORD coord=(*(COORD*)Param2);
  SMALL_RECT rect;
  int IncY=coord.Y-DlgHeight-4;

  ...

  Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0);

  Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,&amp;rect);
  coord.X=rect.Right-rect.Left+1;
  DlgHeight+=IncY;
  coord.Y=DlgHeight;

  if (IncY &gt; 0)
    Info.SendDlgMessage(hDlg,DM_RESIZEDIALOG,0,&amp;coord);

  for (I=0; I &lt; 2; I++)
  {
    Info.SendDlgMessage(hDlg,DM_GETITEMPOSITION,I,&amp;rect);
    rect.Bottom+=(short)IncY;
    Info.SendDlgMessage(hDlg,DM_SETITEMPOSITION,I,&amp;rect);
  }

  for (I=2; I &lt; 10; I++)
  {
    Info.SendDlgMessage(hDlg,DM_GETITEMPOSITION,I,&amp;rect);
    if (I==2)
      rect.Left=-1;
    rect.Top+=(short)IncY;
    Info.SendDlgMessage(hDlg,DM_SETITEMPOSITION,I,&amp;rect);
  }

  if (IncY &lt;= 0)
    Info.SendDlgMessage(hDlg,DM_RESIZEDIALOG,0,&amp;coord);

  Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0);

  ...

  return TRUE;
}</pre>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="../../service_functions/dialoginit.html">DialogInit</a>
</div>

</body>
</html>
